/**
 * @file    WebExternalDispatcher.h
 * @brief   
 * @date    2005-03-15 15:55:23
 * @author  GengYong (gengyong@gmail.com)
 *
 */


#ifndef WEBWINDOW_HEADER_WEBEXTERNALDISPATCHER_H
#define WEBWINDOW_HEADER_WEBEXTERNALDISPATCHER_H
//----------------------------------------------------------

#include "WebWindowImpl.h"

namespace xessage_private {
	class WebExternalDispatcher:public IDispatch
	{
	public:
		WebExternalDispatcher(WebWindowImpl * app);
		virtual ~WebExternalDispatcher();
	public:
		virtual	HRESULT	STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** ppvObject);
		virtual ULONG	STDMETHODCALLTYPE AddRef();
		virtual ULONG	STDMETHODCALLTYPE Release();
		virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
		virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
		virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
		virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
	private:
		WebWindowImpl *	m_appImpl;
		LONG			m_refCount;
	};
}

//----------------------------------------------------------
#endif	//ifndef WEBWINDOW_HEADER_WEBEXTERNALDISPATCHER_H
